package com.sfac.cqlg.service.impl;



import com.sfac.cqlg.dao.UserDao;
import com.sfac.cqlg.entity.Result;
import com.sfac.cqlg.entity.User;
import com.sfac.cqlg.service.UserService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.time.LocalDateTime;

/**
 *  User ServiceImpl
 */
@Service
public class UserServiceImpl implements UserService {

    // 注入数据库的接口
    @Autowired
    private UserDao userDao;

    @Override
    @Transactional
    // 多数据操作时，可以进行一个数据 “回滚” 的操作，保证数据的一致性
    public Result<User> insertUser(User user) {

        // 用户名或密码任何一个为空，则打印错误信 息
        if(StringUtils.isBlank(user.getUserName())||
                StringUtils.isBlank(user.getPassword()))
        {
            return new Result<>(500,"用户名或密码为空.");

        }

        // 判断数据库是否已存在该信息
        // 若temp不为空。说明数据已存在
        User temp = userDao.getUserByUserName(user.getUserName());
        if(temp !=null){
            return new Result<>(500,"用户名重复.");
        }

        user.setCreateDate(LocalDateTime.now());
        userDao.insertUser(user);
        return new Result<>(200,"Insert success.",user);
    }

    @Override
    public Result<User> login(User user) {
        User temp = userDao.getUserByUserNameAndPassword(
                user.getUserName(),user.getPassword());
        if(temp == null)
            return new Result<>(500,"用户名或密码错误");

        return new Result<>(200,"登录成功",temp);
    }
}
